package com.study.aop.theory.myaop;

/**
 * ioc容器，此处功能等价于IocContainer
 * 只不过api接口表现方式更接近于Spring
 */
public interface ApplicationContext {

    /**
     * 向容器中注册bean
     *
     * @param beanName
     * @param beanClass
     */
    void registerBeanDefinition(String beanName, Class<?> beanClass);

    /**
     * 从容器中取出bean
     *
     * @param beanName
     * @return
     * @throws Throwable
     */
    Object getBean(String beanName) throws Throwable;

    /**
     * 此处demo只注册了一个切面，实际生产是注册多个
     *
     * @param aspect
     */
    void setAspect(Aspect aspect);
}
